package com.yc.tomcat.core;

import java.io.File;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 服务器启动类
 *company 源辰
 * @author 惠普
 *@date 2021年9月13日
 *@version 1.0
 *Email 171888429@qq.com
 */
public class StartTomcat {
	public static void main(String[] args) {
		try {
			new StartTomcat().start();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	static {
		File fl = new File(ConstantInfo.BASE_PATH);
		if(!fl.exists()) {
			fl.mkdirs();
		}
	}
	/**
	 * 启动服务器的方法
	 * @throws IOException
	 */
	public void start() throws IOException {
		//TODO 获取端口
		int port = Integer.parseInt(ReadConfig.getInstance().getProperty("port"));
		//TODO 启动服务器 -》 创建serversocket

		ServerSocket ssk = new ServerSocket(port);
		System.out.println("服务器启动，占用端口：" + port);
		new ParseUrlPattern();
		new ParseXml(); //解析xml文件
		//TODO 监听客户请求 创建一个线程池去处理请求
		ExecutorService serviceThread = Executors.newFixedThreadPool(50);//线程大小
		Socket sk = null;
		while(true) {
			sk = ssk.accept();
			serviceThread.submit(new ServerService(sk));//将这个请求给线程池中的任务去处理
		}
	}
}
